package com.sprouting.ops.dao;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sprouting.ops.model.OpsComponentVersion;
import com.sprouting.ops.model.qo.OpsComponentVersionQo;
import com.sprouting.ops.model.vo.OpsComponentVersionVo;
import com.sprouting.ops.model.vo.OpsComponentVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * (组件版本信息表)表数据库访问层
 *
 * @author longx
 * @since 2023-11-25 18:39:34
 */
public interface OpsComponentVersionDao extends BaseMapper<OpsComponentVersion> {

    /**
     * 根据版本查询组件的版本信息,会过滤掉指定的id
     * @param componentId 组件id
     * @param version 版本
     * @param id 主键，会忽略
     * @return
     */
    OpsComponentVersion getByVersionFilterId(@Param("componentId") String componentId, @Param("version") String version, @Param("id") String id);

    /**
     * 分页查询 组件版本信息
     * @param page 分页参数
     * @param query 查询参数
     * @return
     */
    Page<OpsComponentVersionVo> getOpsComponentVersionPageList(Page page, @Param("query") OpsComponentVersionQo query);

    // /**
    //  * 根据ID查询可以依赖的组件
    //  * @param appIdList 应用ID
    //  * @return
    //  */
    // List<OpsComponentVersionVo> getByAppIdBatch(List<String> appIdList);

    /**
     * 根据类型查询组件版本
     * @param componentId 组件ID
     * @param type 组件类型
     * @param id 过滤掉的id
     * @return
     */
    List<OpsComponentVersion> getByTypeFilterId(@Param("componentId") String componentId, @Param("type") Integer type, @Param("id") String id);

    /**
     * 根据产品id查询组件
     * @param productId 产品id
     * @return
     */
    List<OpsComponentVo> getComponentByProductId(String productId);
}

